function updateTable(data, table, currentPage) {
    // 检查数据是否有效
    if (!Array.isArray(data)) {
        console.error('数据格式无效:', data);
        return;
    }

    // 根据表格类型获取对应的表格和分页容器
    const tableMap = {
        'Statement': {
            tableId: 'accountStatementTable',
            paginationId: 'Statement-pagination',
            colSpan: 6
        },
        'account': {
            tableId: 'accountTable',
            paginationId: 'account-pagination',
            colSpan: 7
        },
        'dividends': {
            tableId: 'dividendsTable',
            paginationId: 'dividends-pagination',
            colSpan: 4
        },
        'total-dividends': {
            tableId: 'total-dividendsTable',
            paginationId: 'total-dividends-pagination',
            colSpan: 4
        }
    };

    const tableInfo = tableMap[table];
    if (!tableInfo) {
        console.error('未知的表格类型:', table);
        return;
    }

    // 显示表格和分页容器
    $(`#${tableInfo.tableId}`).show();
    $(`#${tableInfo.paginationId}`).show();

    // 获取并清空表格体
    const $tbody = $(`#${tableInfo.tableId} tbody`);
    $tbody.empty();

    // 如果没有数据，显示提示信息
    if (data.length === 0) {
        $tbody.append(`<tr><td colspan="${tableInfo.colSpan}" class="text-center">没有找到相关数据</td></tr>`);
        $(`#${tableInfo.paginationId}`).empty();
        return;
    }

    // 计算分页
    const itemsPerPage = 10;
    const totalPages = Math.ceil(data.length / itemsPerPage);
    const currentPageData = data.slice((currentPage - 1) * itemsPerPage, currentPage * itemsPerPage);

    // 添加时间格式化函数
    function formatDateTime(dateTimeStr) {
        if (!dateTimeStr) return '';
        // 只保留年月日
        return dateTimeStr.split(' ')[0];
    }

    // 根据表格类型渲染数据
    $.each(currentPageData, function(index, item) {
        const $row = $('<tr>');
        
        switch(table) {
            case 'Statement':
                const actionText = item.sAction == 1 ? '买入' : 
                                 item.sAction == 0 ? '赎回' : '分红买入';
                $row.append(`<td data-title="姓名">${item.sname}</td>`);
                $row.append(`<td data-title="操作">${actionText}</td>`);
                $row.append(`<td data-title="金额">${formatNumber(item.sInvestmentAmount)}</td>`);
                $row.append(`<td data-title="实时净值">${formatNumber(item.sNetAssetValue)}</td>`);
                $row.append(`<td data-title="基金份额">${formatNumber(item.sInvestmentShare)}</td>`);
                $row.append(`<td data-title="操作日期">${formatDateTime(item.sdate)}</td>`);
                break;
            case 'account':

                $row.append(`<td data-title="姓名">${item.sname}</td>`);
                $row.append(`<td data-title="总投资金额">${formatNumber(item.InvestmentAmount)}</td>`);
                $row.append(`<td data-title="总份额">${formatNumber(item.TotalShare)}</td>`);
                $row.append(`<td data-title="总资产">${formatNumber(item.TotalAssets)}</td>`);
                $row.append(`<td data-title="成本净值">${formatNumber(item.InvestmentAmount/item.TotalShare,3)}</td>`);
                $row.append(`<td data-title="总收益" class="${item.Earnings > 0 ? 'text-danger' : 'text-success'}">${formatNumber(item.Earnings)}</td>`);
                $row.append(`<td data-title="盈利率" class="${item.Yield > 0 ? 'text-danger' : 'text-success'}">${formatNumber(item.Yield)}%</td>`);
                $row.append(`<td data-title="更新时间">${formatDateTime(item.inserttime)}</td>`);
                break;
            case 'dividends':
                $row.append(`<td data-title="姓名">${item.sname}</td>`);
                $row.append(`<td data-title="分红份额">${formatNumber(item.sShare)}</td>`);
                $row.append(`<td data-title="分红金额">${formatNumber(item.sDividends)}</td>`);
                $row.append(`<td data-title="分红日期">${formatDateTime(item.sdate)}</td>`);
                break;
            case 'total-dividends':
                $row.append(`<td data-title="总分红份额">${formatNumber(item.sTotalShare)}</td>`);
                $row.append(`<td data-title="每份红利金额">${formatNumber(item.sDividendRatio)}</td>`);
                $row.append(`<td data-title="分红金额">${formatNumber(item.sDividends)}</td>`);
                $row.append(`<td data-title="分红日期">${formatDateTime(item.sdate)}</td>`);
                break;
        }
        
        $tbody.append($row);
    });

    // 创建分页按钮
    createPagination(totalPages, currentPage, table, data);
    updatePaginationActiveClass(currentPage, table);
}

//处理标签页切换
document.addEventListener('DOMContentLoaded', function() {
    // 监听 Bootstrap 的 tab 切换事件
    $('button[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) {
        // 获取当前激活的标签ID
        const targetId = $(e.target).attr('id');
        
        // 如果是总分红标签
        if (targetId === 'total-dividends-tab') {
            // 自动触发总分红查询
            $.ajax({
                type: 'POST',
                url: '/getTotalDividends',
                success: function(response) {
                    updateTable(response, 'total-dividends', 1);
                },
                error: function(xhr, status, error) {
                    console.error('查询总分红记录出错:', error);
                }
            });
        }
    });
});

//设置默认日期
$(document).ready(function() {
    // 设置页面上所有的date类型的input的值为当前日期
    $('.date-input').val(new Date().toISOString().split('T')[0]);
});

//全部赎回下拉控制
$(document).ready(function() {
    // 为 #action 下拉菜单绑定 change 事件监听器
    $('#action').change(function() {
        // 检查 #action 下拉菜单的选中值
        if ($(this).val() === '0') {
            // 如果选中值为 '2'，则显示 #ifall 下拉菜单
            $('#ifall').show();
            $('#ifalllabel').show();
        } else {
            // 否则，隐藏 #ifall 下拉菜单
            $('#ifall').hide();
            $('#ifalllabel').hide();
        }
    });
});

//登出按钮
document.addEventListener('DOMContentLoaded', function() {
    var logoutButton = document.getElementById('logout-button');
    logoutButton.addEventListener('click', function() {
        // 使用 fetch 发送 AJAX 请求到 /logout 路由
        fetch('/logout', {
            method: 'POST',
            credentials: 'include'
        })
        .then(response => {
            if (response.ok) {
                // 如果服务器响应成功，重定向到登录页面
                alert('您已登出！');
                window.location.href = '/login';
            } else {
                // 如果服务器响应失败，处理错误
                console.error('登出失败:', response.statusText);
            }
        })
        .catch(error => {
            // 网络错误或其他问题
            console.error('请求错误:', error);
        });
    });
});

// 处理查询
$('form[data-action="query"]').submit(function(event) {
    event.preventDefault();
    var form = $(this);
    var url = form.attr('action');
    var formData = form.serialize();
    var tableName = form.data('table');
    var currentPage = 1;

    $.ajax({
        type: 'POST',
        url: url,
        data: formData,
        success: function(response) {
            updateTable(response, tableName, currentPage);
        },
        error: function(xhr, status, error) {
            console.error('查询出错:', error);
        }
    });
});

function createPagination(totalPages, currentPage, currentTable, alldata) {
    // 清除现有的分页按钮
    $('#'+currentTable+'-pagination').empty();
    // 生成分页按钮
    var paginationHtml = '';
    if (currentPage > 1) {
        paginationHtml += '<button data-page="' + (currentPage - 1) + '" class="prev">上一页</button>';
    } else {
        paginationHtml += '<button class="prev disabled">上一页</button>';
    }
    for (var i = 1; i <= totalPages; i++) {
        paginationHtml += '<button data-page="' + i + '"' + (i === currentPage ? ' class="active"' : '') + '>' + i + '</button>';
    }
    if (currentPage < totalPages) {
        paginationHtml += '<button data-page="' + (currentPage + 1) + '" class="next">下一页</button>';
    } else {
        paginationHtml += '<button class="next disabled">下一页</button>';
    }
    $('#'+currentTable+'-pagination').html(paginationHtml);
    // 绑定分页事件
    bindPaginationEvents(currentTable, alldata);
}

function updatePaginationActiveClass(newPage, currentTable) {
    // 移除所有按钮的 active 类
    $('#'+currentTable+'-pagination button').removeClass('active');
    // 根据 currentPage 激活相应的按钮
    $('#'+currentTable+'-pagination button[data-page="' + newPage + '"]').addClass('active');
}

function bindPaginationEvents(currentTable, alldata) {    
    $('#'+currentTable+'-pagination button').click(function(event) {
        if ($(this).hasClass('disabled')) {
            event.preventDefault();
            return;
        }
        var newPage = $(this).data('page');      
        updateTable(alldata, currentTable, newPage);        
        updatePaginationActiveClass(newPage, currentTable);
    });
}

// 添加数字格式化函数
function formatNumber(num,fixed=2) {
    if (num === null || num === undefined || isNaN(num)) return '0.00';
    return parseFloat(num).toFixed(fixed).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}


